//给定 s 和 t 两个字符串，当它们分别被输入到空白的文本编辑器后，如果两者相等，返回 true 。# 代表退格字符。

#include "train.h"

class Solution {
public:
    void pushStack(string& s, stack<char>& s1)
    {
        for (int i = 0; s[i]; i++)
        {
            if (s[i] != '#')s1.push(s[i]);
            else if (!s1.empty()) s1.pop();
        }
    }

    bool backspaceCompare(string s, string t) {
        stack<char> s1, s2;
        pushStack(s, s1);
        pushStack(t, s2);
        if (s1.size() != s2.size()) return false;
        while (!s1.empty())
        {
            if (s1.top() != s2.top()) return false;
            s1.pop(), s2.pop();
        }
        return true;
    }
};


////重构字符串
//class Solution {
//public:
//    string build(string str)
//    {
//        string ret;
//        for (char ch : str)
//        {
//            if (ch != '#') ret.push_back(ch);
//            else if (!ret.empty()) ret.pop_back();
//        }
//        return ret;
//    }
//    bool backspaceCompare(string s, string t) {
//        return  build(s) == build(t);
//    }
//};